package cate.game.play.buff.h;

import cate.common.util.XT;
import cate.game.play.buff.BuffHandler;
import cate.game.play.config.PlayCfgArgs;
import cate.game.play.fighter.Fighter;
import cate.game.play.proce.action.ctx.SkillActionCtx;

import java.util.List;

/**
 * 造成法术伤害时，会受到基于自身攻击力的30% （强化后会基于伤害）
 */
public class 反噬BH extends BuffHandler {

	private List<Byte> 技能性质;

	private double 系数;

	private boolean 基于伤害;

	//技能性质=1#2#3&系数=3000&基于伤害=0
	@Override
	public void parse(String code) {
		PlayCfgArgs args = new PlayCfgArgs(code);
		技能性质 = args.getByteList("技能性质");
		系数 = args.getWDouble("系数", 0d);
		基于伤害 = args.getBoolean("基于伤害", false);
	}

	@Override
	public void parseExt(String code) {
		PlayCfgArgs args = new PlayCfgArgs(code);
		系数 += args.getWDouble("系数", 0d);
		基于伤害 = args.getBoolean("基于伤害", false) || 基于伤害;
	}

	//技能性质=2&系数=3000
	@Override
	public void afterOneAttack(SkillActionCtx action, byte nature, long totalDamage, boolean strike, Fighter target) {
		if (XT.isNotBlank(技能性质) && !技能性质.contains(nature)) {
			return;
		}
		double buffDamage;
		if (基于伤害) {
			buffDamage = totalDamage * 系数;
		} else {
			buffDamage = buff.owner.attr.attTotal() * 系数;
		}
		buff.owner.attr.buffHurt(action, buff.caster, buffDamage);
	}
}
